package com.wontube.smr.client;

import java.util.List;

import com.wontube.smr.client.model.po.Country;
import com.wontube.smr.client.model.po.DeviceExpert;
import com.wontube.smr.client.model.po.WebsiteLink;
import com.wontube.smr.client.model.vo.LocationInfo;


/**
 * @author yuechao
 *
 */
public interface IDeviceHandler {
	// all sys id
	final String sysIdAndroid = "Android";
	final String sysIdIPhone = "IPhone";
	final String sysIdWeb = "Website";
	final String sysIdIPad = "IPad";
	
	/**
	 * get all user agent
	 */
	List<DeviceExpert> getAllSimulateAgent();
	
	/**
	 * get simulate user agent by domain name
	 * 
	 * eg. youtube.com
	 * 
	 * @param domain
	 * @param sysId
	 * 
	 * @return
	 */
	String getSimulateAgent(String domain, String sysId);
	
	/**
	 * is the domain supprt download
	 * 
	 * eg. youtube.com
	 * @param domain
	 * @param sysId
	 * 
	 * @return
	 */
	Boolean isDownSupport(String domain, String sysId);
	
	/**
	 * get the location
	 * 
	 * @return
	 */
	LocationInfo getLocation();
	
	/**
	 * list all category
	 * @deprecated 请使用指明 countryCode 的重载
	 * 
	 * @return
	 */
	List<String> listAllCategory();
	
	/**
	 * list all category
	 * 
	 * @return
	 */
	List<String> listAllCategory(String countryCode);
	
	/**
	 * list device home links
	 * 
	 * @param sysId
	 * 
	 *  @deprecated 请使用指明 countryCode 的重载
	 *  
	 * @return
	 */
	List<WebsiteLink> listDeviceHomeLinks(String sysId);
	
	/**
	 *  list device home links
	 *  
	 * @param sysId
	 * @return
	 */
	List<WebsiteLink> listDeviceHomeLinks(String sysId, String countryCode);
	
	/**
	 * list more links
	 * 
	 * @param sysId
	 * 
	 *  @deprecated 请使用指明 countryCode 的重载
	 *  
	 * @return
	 */
	List<WebsiteLink> listMoreLinks(String sysId);

	/**
	 * list more links
	 * 
	 * @param sysId
	 * @param countryCode
	 * @return
	 */
	List<WebsiteLink> listMoreLinks(String sysId, String countryCode);
	
	/**
	 * list all country
	 * 
	 * @return
	 */
	List<Country> listCountries();
	
	/**
	 * list device home links
	 * 
	 * @deprecated 请使用具体指明 sysId 的重载
	 * 
	 * @return
	 */
	List<WebsiteLink> listDeviceHomeLinks();
	
	/**
	 * list more links
	 * 
	 * @deprecated 请使用具体指明 sysId 的重载
	 * 
	 * @return
	 */
	List<WebsiteLink> listMoreLinks();
}
